Applications on a user device, such as a laptop, commonly communicate with one another to synchronize information. This is particularly true for applications in a Mobile Device Management (“MDM”) or Enterprise Mobility Management (“EMM”) system. In those systems, providers can allow employees to access multiple different applications based on a single user authentication, and actions in one application can impact functionality in another. For single-sign-on (“SSO”) and other management features to function correctly, applications on the user device need to synchronize information amongst themselves.
ANDROID applications have commonly used implicit broadcasts for data synchronization. A first application can broadcast a request that is received by all other applications that have registered with the operation system (“OS”) to receive the broadcasts. The receiving applications respond to those requests, such as push and pull requests, to send and receive data updates.
However, newer OS versions and software development kits (“SDK”) can prevent applications from registering with the OS to receive implicit broadcasts. For example, ANDROID 8.0 SDK 26 and above disallows registering receivers for implicit broadcasts. An application that does not register a broadcast receiver will not receive an implicit broadcast sent by another application.
This can break synchronization of applications on the user device. For example, for ANDROID 8.0 and higher, first applications that target a first SDK (26 or greater) will not receive implicit broadcasts from second applications targeting a second SDK (25 or lower). The first applications can use some other protocol to synchronize amongst themselves, but this still creates a backwards compatibility issue. Two application clusters targeting different SDKs will only synchronize amongst themselves and not with each other.
As a result, a need exists for systems and methods for synchronizing states between clusters of applications that target different SDKs.